package com.easy.util;
//验证码
import cn.hutool.captcha.LineCaptcha;
import cn.hutool.core.codec.Base64;
import org.springframework.beans.factory.SmartInitializingSingleton;

import java.util.Map;
import java.util.UUID;

public class CaptchaUtil {

    private static final ExpiryMap expiryMap=new ExpiryMap();
    private static final long EXPIRY_TIME=1000*60*5;//8分钟


    //    获取验证码    Map返回到前端（发送验证码的时候带着key过去）  expiryMap存储在后端（根据key进行验证）
    public static Map getCaptcha(){

        //定义图形验证码的长和宽
        LineCaptcha lineCaptcha =cn.hutool.captcha. CaptchaUtil.createLineCaptcha(200, 100,4,20);

        //图片
        //将图片转换为二维数组
        //Base64编码解码-Base64
        String imgbase64=Base64.encode(lineCaptcha.getImageBytes());
        System.out.println(imgbase64);

//        验证码中的编号(正确的数)
        String code = lineCaptcha.getCode();
        System.out.println( code);
        String key= UUID.randomUUID().toString();
        Map map=Map.of("key",key,"base","data:image/png;base64,"+imgbase64);//发给前端
        expiryMap.put(key,code,EXPIRY_TIME);//code字符串  后台存储
        return map;
    }


    //    校验验证码
    public static boolean checkCaptcha(String key, String code){
String captchaCode=(String) expiryMap.get(key);
return code.equalsIgnoreCase(captchaCode);
    }
}
